package com.example.common.utils;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@ApiModel(value = "全局统一返回结果")
public class Resultb {

    @ApiModelProperty(value = "返回码")
    private  Integer code;
    @ApiModelProperty(value = "返回消息")
    private  String message;
    @ApiModelProperty(value = "是否成功")
    private  Boolean success;
    @ApiModelProperty(value = "返回数据")
    private Object data;
    public Resultb() {}

    /**
     * 返回默认成功，data无数据
     * @return
     */
    public static Resultb success(){
        Resultb r = new Resultb();
        r.setSuccess(ResultCodeEnum.SUCCESS.isSuccess());
        r.setCode(ResultCodeEnum.SUCCESS.getCode());
        r.setMessage(ResultCodeEnum.SUCCESS.getMessage());
        return r;
    }

    /**
     * 返回自定义默认枚举
     * @param resultCodeEnum
     * @return
     */
    public static Resultb success(ResultCodeEnum resultCodeEnum) {
        Resultb r = new Resultb();
        r.setSuccess(resultCodeEnum.isSuccess());
        r.setCode(resultCodeEnum.getCode());
        r.setMessage(resultCodeEnum.getMessage());
        return r;
    }

    /**
     * 返回自定义成功结果集
     * @param data
     * @return
     */
    public static Resultb success(Object data) {
        Resultb r = new Resultb();
        r.setSuccess(ResultCodeEnum.SUCCESS.isSuccess());
        r.setCode(ResultCodeEnum.SUCCESS.getCode());
        r.setMessage(ResultCodeEnum.SUCCESS.getMessage());
        r.setData(data);
        return r;
    }


    /**
     * 返回默认失败
     * @return
     */
    public static Resultb error(){
        Resultb r = new Resultb();
        r.setSuccess(ResultCodeEnum.UNKNOWN_REASON.isSuccess());
        r.setCode(ResultCodeEnum.UNKNOWN_REASON.getCode());
        r.setMessage(ResultCodeEnum.UNKNOWN_REASON.getMessage());
        return r;
    }

    /**
     * 返回自定义默认枚举
     * @param resultCodeEnum
     * @return
     */
    public static Resultb error(ResultCodeEnum resultCodeEnum){
        Resultb r = new Resultb();
        r.setSuccess(resultCodeEnum.isSuccess());
        r.setCode(resultCodeEnum.getCode());
        r.setMessage(resultCodeEnum.getMessage());
        return r;
    }

    /**
     * 返回默认失败结果集
     * @param b
     * @return
     */
    public static Resultb error(Object b){
        Resultb r = new Resultb();
        r.setSuccess(ResultCodeEnum.UNKNOWN_REASON.isSuccess());
        r.setCode(ResultCodeEnum.UNKNOWN_REASON.getCode());
        r.setMessage(ResultCodeEnum.UNKNOWN_REASON.getMessage());
        r.setData(b);
        return r;
    }
    /**
     *
     * @param resultCodeEnum
     * @return
     */
    public static Resultb setResult(ResultCodeEnum resultCodeEnum){
        Resultb r = new Resultb();
        r.setSuccess(resultCodeEnum.isSuccess());
        r.setCode(resultCodeEnum.getCode());
        r.setMessage(resultCodeEnum.getMessage());
        return r;
    }

    public Resultb success(Boolean success){
        this.setSuccess(success);
        return this;
    }

    public Resultb message(String message){
        this.setMessage(message);
        return this;
    }

    public Resultb code(Integer code){
        this.setCode(code);
        return this;
    }
    public Resultb data(Object data) {
        this.data = data;
        return this;

    }


}
